package vip.xiaonuo.biz.modular.nccAi.util.nccReq;

import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import vip.xiaonuo.biz.modular.nccAi.entity.BizAiNcc;

import java.text.SimpleDateFormat;
import java.util.*;

/**
 * ClassName:conExpenseParam
 * Description:
 *
 * @Author:薛守立
 * @CreateTime:2025/4/18 13:59
 */
@Setter
@Getter
@ToString
public class ConExpenseParam {

    // 需要传入参数（合同名称、合同金额）
    public ConExpenseParam() {
        this.signorg = pk_org;
        this.organizer = pk_org;
        // 格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date now = new Date();
        this.valdate = sdf.format(now);
        // 签字盖章日期(当日)
        this.subscribedate = this.valdate;
        // 计划终止日期
        this.invallidate= this.valdate;
    }

    public ConExpenseParam(BizAiNcc aiNcc, String cvendorid, String personid) {
        // 格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date now = new Date();
        String coze = aiNcc.getExtJson();
        if(coze == null) throw new RuntimeException("coze工作流数据执行错误");
        // 格式转化
        ObjectMapper objectMapper = new ObjectMapper();

        try {
            CozeResParam cozeRes = objectMapper.readValue(coze, CozeResParam.class);
            this.signorg = aiNcc.getNccOrg();
            this.personid = personid;
            if(Objects.equals(aiNcc.getNccOrg(), "10204")){
                this.depid="1001A1100000005PGV5X";
            }
            if(Objects.equals(aiNcc.getNccOrg(), "10221")){
                this.depid="1001A110000000B7MKNH";
            }
            this.pk_org = aiNcc.getNccOrg();
            this.organizer = aiNcc.getNccOrg();
            this.ctname = cozeRes.getCtName();
            this.ntotalorigmny = cozeRes.getAmount();
            this.cvendorid = cvendorid;
            this.valdate = sdf.format(now);
            // 签字盖章日期(当日)
            this.subscribedate = this.valdate;
            // 计划终止日期
            this.invallidate= this.valdate;
        }catch (Exception e){

        }

    }
    // 组织机构代码
    String pk_org;
    // 合同名称(转化为付款单据名称)
    String ctname;
    // 单据类型编码
    String cbilltypecode = "FCT1";
    // 合同类型编码
    String vtrantypecode="FCT1-01";
    // 合同类型
    String ctrantypeid="FCT1-01";
    // 币种
    String corigcurrencyid="CNY";
    // 折本汇率
    String nexchangerate = "1.00";
    // 原币价税合计
    String ntotalorigmny;
    // 承办组织 同pk_org
    String organizer;
    // 签约组织版本 同pk_org
    String signorg;
    // 期初标志
    String earlysign = "N";
    // 计划金额计算方式
    String mountcalculation = "1";
    // 超合同付款比例
    String overrate ="0.00";
    // 供应商 （供应商ID）
    String cvendorid;
    // 签字盖章日期(当日)
    String subscribedate;
    // 计划生效日期
    String valdate;
    // 计划终止日期
    String invallidate;
    // 是否敞口合同
    String openct = "Y";
    // 承办人员（郑斌 孙立 userID）
    String personid;
    // 承办部门 （华北 deptID）
    String depid;
    // 付款协议
    String pk_payterm="1001ZZ1000000004HVPL";
    // 合同明细
    List<Map<String , String>> fct_ap_b;
    // 付款计划
    List<Map<String , String>> fct_ap_plan;
}
